package com.xqx.controller;

import com.xqx.common.lang.Result;
import com.xqx.pojo.User;
import com.xqx.service.IUserService;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author x2much
 * @since 2021-04-10
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    IUserService userService;

    @RequiresAuthentication     //这个注解的作用是：告诉它需要进行登录，才能进行访问
    @GetMapping("/index")
    public Result index() {
        User user = userService.getById(1L);
        return Result.success(user);
    }

    // @Validated与@Valid的简单对比说明
    // @Valid注解与@Validated注解功能大部分类似；两者的不同主要在于:@Valid属于javax下的，而@Validated属于spring下；
    // @Valid支持嵌套校验、而@Validated不支持，@Validated支持分组，而@Valid不支持。笔者这里只简单介绍@Validated的使用时机
    // 这里之前是save(@Validated @RequestBody User user)，所以邮箱验证和用户名验证老是无效，换成@Valid完美解决！！！
    @PostMapping("/save")
    public Result save(@Valid @RequestBody User user) {
        return Result.success(user);
    }
}
